package movilmax.sia_corp.action;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import movilmax.sia_corp.model.Listax;
import movilmax.sia_corp.model.Usuario;
import apli.conectar.Conectar;
import basedatos.BaseDatos;
import basedatos.Resultado;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class CargarListaTicket extends ActionSupport {
	

	private static final long serialVersionUID = -3366194762136014939L;
	private List<Listax>  departamentos;
	private List<Listax>  operadores;
	private List<Listax>  tiposTickets;
	private List<Listax>  detalleTipoTickets;
	
	private String  departamento;
	private String  operador;
	private String  tipoTicket;
	private String  detalleTipoTicket;
	
	
	
	@SuppressWarnings("rawtypes")
	public String cargarDepartamentos( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
    	departamentos=new ArrayList<Listax>();
    	String SQL="SELECT D.cod, D.descripcion FROM departamentos D WHERE D.activo='1'";
    	
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  departamentos.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarOperador( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
    	operadores=new ArrayList<Listax>();
    	String SQL=" SELECT U.usuario, U.descripcion FROM departamentos D, usuarios U WHERE D.cod=U.departamento AND U.departamento='"+this.getDepartamento()+"' ORDER BY U.descripcion ";
    	
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("usuario"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  operadores.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarTipoTicket( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		tiposTickets=new ArrayList<Listax>();
    	String SQL=" select T.cod,T.descripcion from tipos_actividad T, tipos_actividad_dep X where X.departamento='" + this.getDepartamento() + "' and T.cod=X.tipo_act and X.mostrar='1' and T.mostrar='1' Order by T.descripcion ";
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  tiposTickets.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	@SuppressWarnings("rawtypes")
	public String cargarDetalleTipoTicket( BaseDatos BD){
    	Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		/*if(this.getTipoTicket()==null){
			return SUCCESS;
		}*/
		detalleTipoTickets=new ArrayList<Listax>();
    	String SQL=" SELECT TTD.cod, TTD.descripcion FROM tipos_ticket T, detalle_tipos_ticket DT, tipos_ticket_det TTD WHERE T.cod=DT.ticket AND TTD.cod=DT.detalle AND T.cod='"+this.getTipoTicket()+"'  group by  TTD.cod, TTD.descripcion";
    	this.addActionError(SQL);
		Resultado RCS=BD.consultar(SQL);
		  if(RCS.RP){
			  do{ 
				  Listax LST=new Listax();
				  LST.setCod(RCS.getCadena("cod"));
				  LST.setDescripcion(RCS.getCadena("descripcion").toUpperCase());
				  detalleTipoTickets.add(LST);
			  }while(RCS.sigItem()); 
		  }
		return SUCCESS;  
	}
	
	
	@SuppressWarnings("rawtypes")
	public String getJSON(){
		Map session = ActionContext.getContext().getSession();
    	Usuario USUARIO = (Usuario) session.get("ses_usuario");
		if(USUARIO==null){
			this.addActionError("La sesion del usuario ha caducado" ); 
			return ERROR;
		}
		Conectar BASE=new Conectar();
		if(BASE.getMsg().equals("SI")){
			cargarDepartamentos(BASE.getBaseDatos());
			cargarTipoTicket(BASE.getBaseDatos());
			cargarDetalleTipoTicket(BASE.getBaseDatos());
			BASE.getBaseDatos().cerrarConexion();
		  	return SUCCESS;
		}else{
			this.addActionError("No hay conexion al servidor");
			return ERROR;
		}
  }









//-----------------------------------------------getters & setters------------------------------------------------------//
	

	public List<Listax> getDepartamentos() {
		return departamentos;
	}

	public void setDepartamentos(List<Listax> departamentos) {
		this.departamentos = departamentos;
	}

	public List<Listax> getOperadores() {
		return operadores;
	}

	public void setOperadores(List<Listax> operadores) {
		this.operadores = operadores;
	}

	public List<Listax> getTiposTickets() {
		return tiposTickets;
	}

	public void setTiposTickets(List<Listax> tiposTickets) {
		this.tiposTickets = tiposTickets;
	}

	public List<Listax> getDetalleTipoTickets() {
		return detalleTipoTickets;
	}

	public void setDetalleTipoTickets(List<Listax> detalleTipoTickets) {
		this.detalleTipoTickets = detalleTipoTickets;
	}

	public String getDepartamento() {
		return departamento;
	}

	public void setDepartamento(String departamento) {
		this.departamento = departamento;
	}

	public String getOperador() {
		return operador;
	}

	public void setOperador(String operador) {
		this.operador = operador;
	}

	public String getTipoTicket() {
		return tipoTicket;
	}

	public void setTipoTicket(String tipoTicket) {
		this.tipoTicket = tipoTicket;
	}

	public String getDetalleTipoTicket() {
		return detalleTipoTicket;
	}

	public void setDetalleTipoTicket(String detalleTipoTicket) {
		this.detalleTipoTicket = detalleTipoTicket;
	}
	
	
	
	

}
